1. Technical Field
The present invention relates to a method of authentication in a computer system, a computer system for executing the method, and a computer program product containing program code portions to execute the method.
2. Description of the Related Art
A client application needs to access resources of a server application. The client application opens a communication channel with the server application. The communication channel is usually unauthenticated, which means that any client application can establish the connection. Before the client application accesses the resources of the server application, the client application requests authentication from the server application by identifying the name of the client application user. To authenticate the client application user, the server application sends the client application a challenge, a puzzle only solvable by the actual client application user. The client application sends back the solution to the puzzle. The server application verifies the solution, thus authenticating the client application and granting access of resources of the server application to the client application.
In prior art implementations, the challenge could be a message from the server application that the client application encrypts with the key of the client application user. The message could be a nonce, which is known as a “number used once” in security engineering, and which has been generated only for one communication session. The nonce may be any random data or a timestamp. The key of the client application user is either a symmetric key in which both the client application and the server application have a copy. Or the key is an asymmetric one in which the client application has the private key and the server application the corresponding public key. The client sends back the encrypted message to the server application. The server application decrypts the message with the symmetric key or public key, respectively, of the client application user and verifies that this decrypted message matches the message that the server application has sent to the client application. When the verification is successful, the server application infers that the message has been encrypted by the owner of the symmetric or private key, respectively, of the client application user and authenticates the sender of the encrypted message.
In prior art, an alternative way of authentication is based on the encryption and the decryption of a password with asymmetric keys. The client application sends a password to the server application by way of an encrypted communication channel. The communication channel can be encrypted with the public key of the server application user, which is either publicly available or has been passed to the client application before encrypting and sending the password over the communication channel to the server application. The server application is the only one able to decrypt the received message containing the password with the server application user's private key. When the server application is running on a server application host, the server application may request authentication from the underlying operating system of the server application host using the password obtained from the client application.
In prior art, the Kerberos algorithm uses authentication of a client application by a server application over a central authentication server. Details can be found for example in C. Kaufman et al., Network Security, Prentice Hall, 2002. The Kerberos algorithm essentially works as follows: The client application sends a request to a central authentication server to return a ticket for authentication by the server application. The authentication server invents a session key and creates a ticket for the server application by encrypting the session key and the name of the client application user with the public or symmetric key of the server application user. The invented session key, the generated ticket for the server application, and the name of the server application user are all encrypted with the public or symmetric key of the client application user. The central authentication server sends the encrypted message to the client application. The client application user is the only one able to decrypt the received message with the client application user's private or symmetric key. The client application user verifies that the message received from the central authentication server can be used to authenticate the client application by the server application because only the client application user can decrypt the message and it contains the name of the server application user. The client application sends the ticket for the server application and a timestamp encrypted with the session key to the server application. The server application user is the only one able to decrypt the ticket with the server application user's private or symmetric key and retrieve the session key and the name of the client application user. The server application recognizes the name of the client application user that the central authentication server has inserted into the ticket, thus the ticket is used to authenticate the sending client application by the server application. The server application uses the session key from the decrypted ticket to decrypt the encrypted timestamp and validates it. On base of the ticket and the timestamp, the server application grants access to the client application who requested access to the server application.
The encryption of the central authentication server guarantees that only the client application user can decrypt the message from the central authentication server and only the server application user can decrypt the ticket that the central authentication server has created and the client application has sent to the server application.
In the Kerberos algorithm, the client application user authenticates itself with the server application without knowing a password or a key of the server application user. Vice versa, the server application does not have the need to store any key or password of the client application user. The central authentication server, however, must store the public or symmetric keys of both the client application user and the server application user.
The prior art has a disadvantage when the server application cannot access the authentication mechanism of the underlying operating system. In this case, the server application cannot use a password received from the client application to authenticate the client application user.
A second disadvantage of the prior art is the fact that the communication channel must be encrypted when transmitting any password. At least one of the client application and the server application must implement the encryption and decryption of a password or a nonce which are required for the secure exchange of data over the communication channel. The implementation of encryption and decryption program code is complex.
The Kerberos algorithm is based on a central authentication server with a ticket generation mechanism and the encryption and decryption of messages using symmetric or asymmetric keys of the client application user and the server application user. The setup and implementation of the authentication server and the program code for encryption and decryption at the client application side and server application side are also complex.